﻿using System;
using System.Collections.Generic;
using System.Windows;
using System.Windows.Media;
using WPFSchematics.Definition.Entities;
using WPFSchematics.Definition.Layers;
using WPFSchematics.Definition.Views;

namespace WPFSchematics.Definition.Shapes
{
    /// <summary>
    /// 图元呈现器接口。
    /// </summary>
    public interface IShapePresenter : IDisposable ,IPresenter
    {
        /// <summary>
        /// 正投影边框。
        /// </summary>
        Rect OrthographicBounds { get; }
        /// <summary>
        /// 透视投影边框。
        /// </summary>
        Rect PerspectiveBounds { get; }
        /// <summary>
        /// 所属视图。
        /// </summary>
        IShapeView ShapeView { set; get; }
        /// <summary>
        /// 所属渲染器。
        /// </summary>
        IPresenterRender PresenterRender { set; get; }
        /// <summary>
        /// 所属图元提供者。
        /// </summary>
        IShapeProvider ShapeProvider { set; get;}
        /// <summary>
        /// 变换绘图。（承载图元世界变换。）
        /// </summary>
        DrawingGroup NoTransformDrawing { get; }
        /// <summary>
        /// 变换绘图。（承载图元世界变换。）
        /// </summary>
        DrawingGroup TransformDrawing { get; }
        /// <summary>
        /// 
        /// </summary>
        DrawingGroup ProviderDrawing { get; }
        /// <summary>
        /// 
        /// </summary>
        Geometry PresenterOutline { get; set; }
        /// <summary>
        /// 
        /// </summary>
        Pen PresenterStroke { get; set; }
        /// <summary>
        /// 
        /// </summary>
        Pen PresenterStateStroke { get; set; }
        /// <summary>
        /// 
        /// </summary>
        Pen HitTestStroke { get; }
        /// <summary>
        /// 幻影绘图可见控制。
        /// </summary>
        bool GhostVisible { get; set; }
        /// <summary>
        /// 设定可见性。
        /// </summary>
        /// <param name="flag"></param>
        void SetVisible(bool flag);

   }
}
